/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package modelo;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.ListIterator;

/**
 *
 * @author Lenovo
 */
public class Exposicion {

    private LinkedList<Artista> losArtistas;
    private ArrayList<String> pintores;
    private ArrayList<String> escultores;
    private ArrayList<String> fotografos;

    public Exposicion() {
        losArtistas = new LinkedList<Artista>();
        pintores = new ArrayList<String>();
        escultores = new ArrayList<String>();
        fotografos = new ArrayList<String>();
    }

    public LinkedList<Artista> getLosArtistas() {
        return losArtistas;
    }

    /**
     * metodo que busca un artista por nombres y apellidos
     *
     * @param nombres,del artista que se desea buscar
     * @param Apellidos,del artista que se desea buscar
     * @return el artista si lo encuentra de lo contrario null
     */
    public Artista buscarArtista(String nombres, String Apellidos) {
        ListIterator<Artista> iterador = losArtistas.listIterator();
        while (iterador.hasNext()) {
            Artista art = iterador.next();
            if (art.getNombres().equalsIgnoreCase(nombres)) {
                if (art.getApellidos().equalsIgnoreCase(Apellidos)) {
                    return art;
                }
            }
        }
        return null;
    }

    /**
     * metodo que agrega un artista a la lista de artistas de la exposición
     *
     * @param artista,artista que se desea agregar a la lista de artistas
     * @return una cadena diciendo si agrego o no el artista
     */
    public String registrarArtista(Artista artista) {
        Artista art = buscarArtista(artista.getNombres(), artista.getApellidos());
        if (art == null) {
            losArtistas.add(artista);
            return "El artista ha sido registrado exitosamente.";
        } else {
            return "El artista ya esta registrado en esta exposición.";
        }
    }

    /**
     * metodo que agrega el nombre completo de un pintor a un ArrayList
     * @return un ArrayList con el nombre de los pintores si hay de lo contrario null
     */
    public ArrayList<String> cargarPintores() {
        ListIterator<Artista> iterador = losArtistas.listIterator();
        while (iterador.hasNext()) {
            Artista art = iterador.next();
            if (art instanceof Pintor) {
                String nomArt = art.getNombres() + " " + art.getApellidos();
                pintores.add(nomArt);
                return pintores;
            }
        }
        return null;
    }

    /**
     * metodo que agrega el nombre completo de un escultor a un ArrayList
     * @return un ArrayList con el nombre de los escultores si hay de lo contrario null
     */
    public ArrayList<String> cargarEscultores() {
        ListIterator<Artista> iterador = losArtistas.listIterator();
        while (iterador.hasNext()) {
            Artista art = iterador.next();
            if (art instanceof Escultor) {
                String nomArt = art.getNombres() + " " + art.getApellidos();
                escultores.add(nomArt);
                return escultores;
            }
        }
        return null;
    }
    /**
     * metodo que agrega el nombre completo de un fotografo a un ArrayList
     * @return un ArrayList con el nombre de los fotografos si hay de lo contrario null
     */
    public ArrayList<String> cargarFotografos() {
        ListIterator<Artista> iterador = losArtistas.listIterator();
        while (iterador.hasNext()) {
            Artista art = iterador.next();
            if (art instanceof Fotografo) {
                String nomArt = art.getNombres() + " " + art.getApellidos();
                fotografos.add(nomArt);
                return fotografos;
            }
        }
        return null;
    }
}
